from 第16天.my_int import param_120, param_1200


def int_func_1():
    """
    python 中存储int 类型，用了类似的方式，同样的数值只会存储一份到常量区，不会区分作用域的情况
    python 解释器在一个py文件中会进行预编译，然后被一次性预编译的int会存储在一个内存空间中
    跨文件调用的时候，就会出现一份int 被存储了两份的情况

    python 为了优化速度，避免整数之间频繁申请和销毁内存空间，使用了小数值的对象池
    对整数范围在[-5, 256]之中的整数都会在启动的时候一次性建立好，并且这些数值永远不会被垃圾回收
    在这个范围内的数值只会被创建一次
    :return:
    """
    param_1 = 120
    param_2 = 120
    print(id(param_1))
    print(id(param_2))

    def inner_func():
        param_3 = 120
        print(id(param_3))

    inner_func()

    print(id(param_120))


def int_func_2():
    param_1 = 1200
    param_2 = 1200
    print(id(param_1))
    print(id(param_2))

    def inner_func():
        param_3 = 1200
        print(id(param_3))

    inner_func()

    print(id(param_1200))


if __name__ == "__main__":
    print("120:")
    int_func_1()
    print("1200:")
    int_func_2()
